<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Foreign Data</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REV="MADE"
HREF="mailto:pgsql-docs@postgresql.org"><LINK
REL="HOME"
TITLE="PostgreSQL 9.1.2 Documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Data Definition"
HREF="ddl.html"><LINK
REL="PREVIOUS"
TITLE="Partitioning"
HREF="ddl-partitioning.html"><LINK
REL="NEXT"
TITLE="Other Database Objects"
HREF="ddl-others.html"><LINK
REL="STYLESHEET"
TYPE="text/css"
HREF="stylesheet.css"><META
HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=ISO-8859-1"><META
NAME="creation"
CONTENT="2011-12-01T22:07:59"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="5"
ALIGN="center"
VALIGN="bottom"
><A
HREF="index.html"
>PostgreSQL 9.1.2 Documentation</A
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
TITLE="Partitioning"
HREF="ddl-partitioning.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
HREF="ddl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="60%"
ALIGN="center"
VALIGN="bottom"
>Chapter 5. Data Definition</TD
><TD
WIDTH="20%"
ALIGN="right"
VALIGN="top"
><A
TITLE="Other Database Objects"
HREF="ddl-others.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="DDL-FOREIGN-DATA"
>5.10. Foreign Data</A
></H1
><P
>    <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> implements portions of the SQL/MED
    specification, allowing you to access data that resides outside
    PostgreSQL using regular SQL queries.  Such data is referred to as
    <I
CLASS="FIRSTTERM"
>foreign data</I
>.  (Note that this usage is not to be confused
    with foreign keys, which are a type of constraint within the database.)
   </P
><P
>    Foreign data is accessed with help from a
    <I
CLASS="FIRSTTERM"
>foreign data wrapper</I
>. A foreign data wrapper is a
    library that can communicate with an external data source, hiding the
    details of connecting to the data source and fetching data from it. There
    is a foreign data wrapper available as a <TT
CLASS="FILENAME"
>contrib</TT
> module,
    which can read plain data files residing on the server.  Other kind of
    foreign data wrappers might be found as third party products.  If none of
    the existing foreign data wrappers suit your needs, you can write your
    own; see <A
HREF="fdwhandler.html"
>Chapter 50</A
>.
   </P
><P
>    To access foreign data, you need to create a <I
CLASS="FIRSTTERM"
>foreign server</I
>
    object, which defines how to connect to a particular external data source,
    according to the set of options used by a particular foreign data
    wrapper. Then you need to create one or more <I
CLASS="FIRSTTERM"
>foreign
    tables</I
>, which define the structure of the remote data. A
    foreign table can be used in queries just like a normal table, but a
    foreign table has no storage in the PostgreSQL server.  Whenever it is
    used, <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> asks the foreign data wrapper
    to fetch the data from the external source.
   </P
><P
>    Accessing remote data may require authentication at the external
    data source.  This information can be provided by a
    <I
CLASS="FIRSTTERM"
>user mapping</I
>, which can provide additional options based
    on the current <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> role.
   </P
><P
>    Currently, foreign tables are read-only.  This limitation may be fixed
    in a future release.
   </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="ddl-partitioning.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="ddl-others.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Partitioning</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="ddl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Other Database Objects</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>